package com.beiding.dbrequest.common;

/**
 * 响应回调
 */
public interface ResponseCallback {

    /**
     * 默认的空白回调逻辑
     *
     * @param responseMassage 响应消息
     */
    default void onResponse(Message responseMassage) {
        if (responseMassage.getStatus() == Message.STATUS_SUCCESS) {
            onSuccess(responseMassage);
        } else {
            onFailed(responseMassage);
            if (responseMassage.getStatus() == Message.STATUS_ERROR) {
                onError(responseMassage);
            } else if (responseMassage.getStatus() == Message.STATUS_TIMEOUT) {
                onTimeout(responseMassage);
            } else {
                onUnexpected(responseMassage);
            }
        }
    }

    /**
     * 响应成功时
     *
     * @param message
     */
    default void onSuccess(Message message) {

    }


    /**
     * 失败
     *
     * @param message
     */
    default void onFailed(Message message) {

    }

    /**
     * 异常失败时
     *
     * @param message
     */
    default void onError(Message message) {

    }

    /**
     * 超时
     *
     * @param message
     */
    default void onTimeout(Message message) {

    }

    /**
     * 不满足期望的
     *
     * @param message
     */
    default void onUnexpected(Message message) {

    }

}
